// 获取DOM元素
const decryptMethodSelect = document.getElementById('decryptMethodSelect');
const enableAutoDecryptCheckbox = document.getElementById('enableAutoDecrypt');
const statusDiv = document.getElementById('status');

// 默认配置
const defaultConfig = {
    decryptMethod: 'timestamp-traceid',
    enableAutoDecrypt: false
};

// 加载当前配置
function loadConfig() {
    chrome.storage.sync.get(['encryptionConfig'], function (result) {
        const config = result.encryptionConfig || defaultConfig;
        applyConfig(config);
        updateStatus(config);
    });
}

// 应用配置到UI
function applyConfig(config) {
    // 设置下拉选择的值
    decryptMethodSelect.value = config.decryptMethod || 'timestamp-traceid';

    // 设置复选框的状态
    enableAutoDecryptCheckbox.checked = config.enableAutoDecrypt || false;
}

// 更新状态显示
function updateStatus(config) {
    const decryptMethodNames = {
        'timestamp-traceid': '雪花算法',
        'uuid-based': '冒泡算法',
        'custom-logic': '线性算法'
    };

    const decryptMethodName = decryptMethodNames[config.decryptMethod] || config.decryptMethod;
    const autoDecryptStatus = config.enableAutoDecrypt ? '自动解密已启用' : '手动解密';

    statusDiv.textContent = `方案: ${decryptMethodName} | ${autoDecryptStatus}`;
}

// 保存配置
function saveConfig() {
    const config = {
        decryptMethod: decryptMethodSelect.value,
        enableAutoDecrypt: enableAutoDecryptCheckbox.checked
    };

    chrome.storage.sync.set({ encryptionConfig: config }, function () {
        if (chrome.runtime.lastError) {
            showNotification('❌ 保存失败: ' + chrome.runtime.lastError.message, 'error');
        } else {
            showNotification('✅ 配置已保存！', 'success');
            updateStatus(config);
        }
    });
}

// 显示通知
function showNotification(message, type) {
    // 移除已存在的通知
    const existingNotification = document.querySelector('.notification');
    if (existingNotification) {
        existingNotification.remove();
    }

    // 创建通知元素
    const notification = document.createElement('div');
    notification.className = `notification ${type}`;
    notification.textContent = message;

    document.body.appendChild(notification);

    // 3秒后自动移除
    setTimeout(function () {
        if (notification.parentNode) {
            notification.parentNode.removeChild(notification);
        }
    }, 3000);
}

// 绑定事件
decryptMethodSelect.addEventListener('change', saveConfig);
enableAutoDecryptCheckbox.addEventListener('change', saveConfig);

// 统计面板按钮事件
document.getElementById('openStatsBtn').addEventListener('click', function () {
    chrome.tabs.create({
        url: chrome.runtime.getURL('stats-panel.html')
    });
});

// 页面加载时初始化
document.addEventListener('DOMContentLoaded', loadConfig);

// 监听配置变化
chrome.storage.onChanged.addListener(function (changes, namespace) {
    if (namespace === 'sync' && changes.encryptionConfig) {
        const newConfig = changes.encryptionConfig.newValue;
        applyConfig(newConfig);
        updateStatus(newConfig);
    }
});

